
// https://www.jianshu.com/p/6f5a0345ee1d
// Flutter默认对对像进行浅拷贝
extension ListExtension on List {
  List get deepCopy {
    List copyList = [];
    for (var item in this) {
      if (item is Map) {
        copyList.add(Map.from(item));
      } else if (item is List) {
        copyList.add(this.deepCopy);
      } else {
        copyList.add(item);
      }
    }
    return copyList;
  }
}

// https://blog.csdn.net/weixin_39649693/article/details/103618693
extension IterableExtension<E> on Iterable<E> {
  /// 返回第一个元素。如果内容为空，返回null.
  E? get firstOrNull => isEmpty ? null : first;

  // /// 返回第一个符合条件的元素。如果不存在则返回null.
  // E? firstOrNullWhere(bool Function(E element) test) {
  //   return firstWhere(test, orElse: () => null);
  // }

  /// 过滤掉所有的 null .
  Iterable<E> get excludingNulls => where((e) => e != null);
}